/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package RRHH_controlador;

import Conexion.Conexion;
import Modelo.SIS_LOG;
import Modelo.SIS_PERFILES;
import RRHH_Modelo.RHH_CARGO;
import RRHH_Modelo.RHH_CARGO_DEP_REG_SUC;
import RRHH_Modelo.RHH_CARGO_PERFIL;
import RRHH_Modelo.RHH_DEPARTAMENTO;
import RRHH_Modelo.RHH_REGIONAL;
import RRHH_Modelo.RHH_SUCURSAL;
import RRHH_Modelo.RHH_USUARIO;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author equipo_2
 */
@WebServlet(name = "RRHH_CARGO_PERFILES", urlPatterns = {"/RRHH_CARGO_PERFILES"})
public class RRHH_CARGO_PERFILES extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
           
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RHH_USUARIO usuario = ((RHH_USUARIO)request.getSession().getAttribute("usr"));
        Conexion con = new Conexion(usuario.getUSUARIO(), usuario.getPASSWORD());
        String html="false";
        try {
            String proceso=request.getParameter("proceso");
            con.Transacction();
            switch(proceso){
                case "buscarCargo":
                    html=buscarCargo(con,request);
                    break;
                case "CargarPerfiles":
                    html=CargarPerfiles(con,request);
                    break;
                case "habilitarPerfil":
                    html=habilitarPerfil(con,request,usuario);
                    break;
                case "GuardarNuevo":
                    html=GuardarNuevo(con,request);
                    break;
                case "eliminar":
                    html=eliminar(con,request);
                    break;
            }
            con.commit();
        } catch (Exception ex) {
            con.rollback();
        }
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        response.getWriter().write(html);
        con.Close();
    }

    public String CargarPerfiles(Conexion con, HttpServletRequest request) throws Exception{
        int id = Integer.parseInt(request.getParameter("id"));
        RHH_CARGO cargo = new RHH_CARGO(con);
        cargo.setCon(con);
        String text=request.getParameter("text");
        text=text==null?"":text;
        cargo = cargo.BuscarXid(id);
        SIS_PERFILES perfil = new SIS_PERFILES();
        perfil.setCon(con);
        List<SIS_PERFILES> ListaInactivos = perfil.TodosLosInactivos(cargo.getID(),text);
        List<SIS_PERFILES> ListaActivos = perfil.TodosLosActivos(cargo.getID(),text);
        String html="<div class='contenedor50 c1' style=\"border-right: solid white thin;\" data-estado='Inactivo'>";
        for(int i = 0; i<ListaInactivos.size(); i++)
        {
            html+="<div class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='0' ondblclick='dblclick("+ListaInactivos.get(i).getID()+")' data-id="+ListaInactivos.get(i).getID()+">"
                    +"<span onclick='abrireliminar("+(int)ListaInactivos.get(i).getID()+")'>(X)</span><span class='negrillaenter'>"+ ListaInactivos.get(i).getDESCRIPCION()
                    +"</span></div>";
        }
        html+="</div><div class='contenedor50 c2' data-estado='activo'>"
                ;
        for(int i = 0; i<ListaActivos.size(); i++)
        {
            html+="<div class='draggable ui-draggable ui-draggable-handle ui-droppable' data-estado='inactivo' data-e='1' ondblclick='dblclick("+ListaActivos.get(i).getID()+")' data-id="+ListaActivos.get(i).getID()+">"
                    +"<span class='negrillaenter'>"+ ListaActivos.get(i).getDESCRIPCION()
                    +"</span></div>";
        }
        html+="</div>";
        return html;
    }
    public String eliminar(Conexion con, HttpServletRequest request) throws Exception{
        String id=request.getParameter("id");
        SIS_PERFILES perfil =new SIS_PERFILES();
        perfil.setCon(con);
        perfil.setID(Integer.parseInt(id));
        perfil.EliminarXid();
        return "true";
    }
    public String GuardarNuevo(Conexion con, HttpServletRequest request) throws Exception{
        String desc=request.getParameter("descripcion");
        SIS_PERFILES perfil =new SIS_PERFILES();
        perfil.setCon(con);
        perfil.setDESCRIPCION(desc);
        perfil.Insertar();
        return "true";
    }
    public String buscarCargo(Conexion con, HttpServletRequest request) throws Exception{
        RHH_CARGO cargos = new RHH_CARGO(con);
        cargos.setCon(con);
        String text=request.getParameter("text");
        List<RHH_CARGO> Lista = cargos.buscarxDepRegSuc(text);
        String html="";
        for(int i =0; i<Lista.size(); i++)
        {
            RHH_CARGO_DEP_REG_SUC drs=new RHH_CARGO_DEP_REG_SUC(con).BuscarXCargos(Lista.get(i).getID());
            RHH_DEPARTAMENTO dep=new RHH_DEPARTAMENTO(con).BuscarXid(drs.getID_DEPTO());
            RHH_REGIONAL reg=new RHH_REGIONAL(con).BuscarXid(drs.getID_REGIONAL());
            RHH_SUCURSAL suc=new RHH_SUCURSAL(con).BuscarXid(drs.getID_SUCURSAL());
            String sucursal="Sin Sucursal";
            String departamento="Sin Departamento";
            String regional="Sin Regional";
            if(suc !=null){
                sucursal=suc.getDESCRIPCION();
            }
            if(reg !=null){
                regional=reg.getDESCRIPCION();
            }
            if(dep !=null){
                departamento=dep.getDESCRIPCION();
            }
            html+="<div onclick='abrirpop("+Lista.get(i).getID()+")' style='padding: 10px; width: 157px; margin: 5px; height: 138px; border-radius: 7px; background: none repeat scroll 0% 0% white; opacity: 0.95; float: left;'>\n" +
"                    <div class='centrado negrilla'>"+Lista.get(i).getDESCRIPCION()+"</div>\n" +
"                    <span class='negrillaenter'>Departamento:</span>"+departamento+"\n" +
"                    <span class='negrillaenter'>Regional:</span>"+regional+"\n" +
"                    <span class='negrillaenter'>Sucursal:</span>"+sucursal+"\n" +
"                </div>";
        }
        return html;
    }
    
    public String habilitarPerfil(Conexion con, HttpServletRequest request,RHH_USUARIO usuario ) throws SQLException, Exception{
        RHH_CARGO_PERFIL perfil = new RHH_CARGO_PERFIL();
        perfil.setCon(con);
        int idcargo = Integer.parseInt(request.getParameter("id"));
        double idperfil = Double.parseDouble(request.getParameter("perfil"));
        try
        {
            perfil=perfil.BuscarXid(idcargo,idperfil);
            perfil.Desabilitar(idcargo,idperfil);
            SIS_PERFILES per = new SIS_PERFILES();
            per.setCon(con);
            per=per.BuscarXid(idperfil);
            RHH_CARGO car = new RHH_CARGO(con);
            car.setCon(con);
            car=car.BuscarXid(idcargo);
            SIS_LOG.LOG(usuario.getID(), 2, "QUITO EL PERFIL "+per.getDESCRIPCION()+" DE EL CARGO "+car.getDESCRIPCION(), con);
        }
        catch(Exception ex)
        {
            perfil = new RHH_CARGO_PERFIL();
            perfil.setCon(con);
            perfil.Abilitar(idcargo,idperfil);
            SIS_PERFILES per = new SIS_PERFILES();
            per.setCon(con);
            per=per.BuscarXid(idperfil);
            RHH_CARGO car = new RHH_CARGO(con);
            car.setCon(con);
            car=car.BuscarXid(idcargo);
            SIS_LOG.LOG(usuario.getID(), 2, "AGREGO EL PERFIL "+per.getDESCRIPCION()+" A EL CARGO "+car.getDESCRIPCION(), con);
        }
        return CargarPerfiles(con, request);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
